package com.linktel.productionLine.service;

import com.linktel.productionLine.common.ErrorCode;
import com.linktel.productionLine.dao.BasePedigreeDao;
import com.linktel.productionLine.entity.BasePedigree;
import com.linktel.productionLine.entity.dto.basePedigree.BasePedigreeDTO;
import com.linktel.productionLine.exception.BusinessException;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;


/**
 * 对工序base_step的操作
 *
 * @Author HuangJiaHui
 * @Date 2023/8/25 10:26
 */
@Service
@AllArgsConstructor
public class BasePedigreeService {

    private BasePedigreeDao basePedigreeDao;

    /**
     * 查询所有产品系列
     *
     * @return 产品系列列表
     */
    public List<BasePedigreeDTO> listProductSeries() {
        return basePedigreeDao.listProductSeries();
    }

    /**
     * 查询所有产品
     *
     * @return 产品列表
     */
    public List<BasePedigreeDTO> listProduct() {
        return basePedigreeDao.listProduct();
    }

    /**
     * 根据产品代码id得到产品系列
     *
     * @param productCode 产品代码id
     * @return 产品系列
     */
    public BasePedigreeDTO getProductSeriesByProductCode(String productCode) {
        return basePedigreeDao.getProductSeriesByProductCode(productCode);
    }

    /**
     * 根据产品系列code得到产品代码列表
     *
     * @param productSeriesCode 产品系列id
     * @return 产品代码列表
     */
    public List<BasePedigreeDTO> getProductListByProductSeriesCode(String productSeriesCode) {
        if (productSeriesCode == null || "".equals(productSeriesCode)) {
            return basePedigreeDao.listProduct();
        }
        BasePedigree basePedigree = basePedigreeDao.getByCode(productSeriesCode);
        if (basePedigree == null) {
            throw new BusinessException(ErrorCode.PARAMS_ERROR, "查询失败");
        }
        if (basePedigree.getId() == null) {
            return null;
        }
        return basePedigreeDao.getProductListByProductSeriesId(basePedigree.getId());
    }
}
